#ifndef AST_AST_NODE_H
#define AST_AST_NODE_H
#include <string>
#include <iostream>
#include <assert.h>

typedef char tiny_int;


class ASTNode{
public:
	enum{
#include "sym_type.h"
	};
protected:
	explicit ASTNode(int iNodeType): m_iNodeType(iNodeType){};

public:
	enum{
	
	};
	virtual ~ASTNode(){};
	
	virtual void 			codeGen() = 0;
	virtual int 			getNodeType() const {return m_iNodeType;};
	const std::string &			getTypeName() const;
protected:
	int			m_iNodeType;
};

#ifdef SYN_DBG
#define COUT  std::cout<<getTypeName()<<std::endl;
#else
#define  COUT
#endif

#endif


